1. Field
This disclosure relates generally to a processor code sequence and, more specifically, to modifying a processor code sequence.
2. Related Art
A computer may be configured to include a dynamic code optimization program. In general, code optimization programs are configured to monitor programs running on a computer in order to identify techniques to speed-up processing of the monitored programs. Commonly, performance-monitoring hardware includes mechanisms that can be used to identify regions of code that are most frequently executed and/or where performance is poor. Such identified regions of code are preferable candidates for code optimization. Having identified such regions of code, a code optimization program can analyze the code and generate an alternative optimized version of the code that is configured to improve the performance of the monitored program. The code optimization program then diverts processing when appropriate to the optimized code. For example, original code may be patched so as to jump to optimized code. Alternatively, special hardware mechanisms may be used that detect specific program addresses and cause execution to be redirected to optimized code. Alternatively, an entire program may be regenerated to include optimized code.
Patching code can be problematic, if, for example, a patch being inserted in original code is longer than a portion of the code that is being replaced (as subsequent code may be overwritten). For example, overwriting subsequent code with a portion of a patch may introduce unpredictable behavior or errors into a program. Overwriting subsequent code with a portion of a patch may be particularly problematic in systems that employ variable length instruction encodings where a minimum length instruction is being patched.